class_name PlayerItemUseContext
extends ItemUseContext

## 玩家物品使用上下文类
## 继承自ItemUseContext，重写世界位置和目标位置
## 使用玩家的发射位置和投掷方向来设置基类属性
var input_node: HCharacterInputNode = null  # 输入节点
var abilities_manager: Node = null #能力管理器
## 构造函数
## @param user: 使用者实体
## @param input: 输入节点
## @param abilities: 能力管理器
func _init(user: Entity = null, input: HCharacterInputNode = null, abilities: Node = null):
	super._init(user)
	input_node = input
	abilities_manager = abilities

## 设置玩家投掷信息
## 通过重写基类的位置和目标来传递投掷信息
## @param launch_pos: 发射位置
## @param throw_dir: 投掷方向
func set_player_throw_info(launch_pos: Vector3, throw_dir: Vector3):
	# 设置发射位置为世界位置
	set_world_position(launch_pos)
	
	# 通过投掷方向计算目标位置（发射位置 + 方向 * 距离）
	var target_distance = 10.0  # 默认目标距离
	var target_pos = launch_pos + throw_dir.normalized() * target_distance
	set_target_position(target_pos)
